/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   binNode_travLv.h                                   :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: TYTY000 <767280080@qq.com>                 +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2024/04/23 19:14:17 by TYTY000           #+#    #+#             */
/*   Updated: 2024/04/25 18:59:08 by TYTY000          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#ifndef __BINNODE_LV__
#define __BINNODE_LV__

#include "../queue/queue.h"

template <typename T>
template <typename VST>
void BinNode<T>::travLv(VST &visit) {
  Queue<BinNodePosi<T>> Q;
  Q.enqueue(this);
  while (!Q.empty()) {
    BinNodePosi<T> n = Q.dequeue();
    visit(n->data);
    if (HasLChild(**n))
      Q.enqueue(n->lc);
    if (HasRChild(**n))
      Q.enqueue(n->rc);
  }
}

#endif // !__BINNODE_LV__
